[Mac/Linux] Command Line指令

本篇紀錄Mac常用的指令(會持續更新)

基本指令

基本查詢

man 指令加上要查詢的指令來閱讀線上手冊,透過線上手冊可以查詢相關指令或是函數的名稱,如查詢ls的用法:

1
man ls


按下鍵盤的q鍵即可離開。

查詢隱藏的檔案

-a可配合其他指令來查詢隱藏的檔案,如:

1
ls -a


上圖可看出,我電腦的家(home)目錄底下有許多隱藏的檔案

建立空檔案

執行touch並指定檔案名稱,當指定的檔案不存在時,touch就會自動建立一個空檔案,並將檔案的時間設定為目前的時間
touch

資料補齊

如果文件名稱過長,或是指令只記得一部分的情形,按下鍵盤上的Tab鍵,會看到相似檔名的候選名單。而如果只有一個,它就會自動全部補上。

資料夾

移除資料夾

後面加個 -r 的指令,就是指要移除資料夾以及裡面全部內容,-r--recurise的縮寫。

1
rm -r 資料夾

複製資料夾

1
cp -r 舊資料夾名稱 新資料夾名稱

範例

假設桌面有一新建的料夾test,內含test.txt的檔案

如果要複製test資料夾,並命名新資料夾為test_folder,執行

1
cp -r test test_folder


上面可看出成功複製新的名為test_folder的資料夾。

若改成存在兩個資料夾,分別為test、test_folder,將test_folder複製到test資料夾內,可以執行

1
cp -r test_folder/ test


上圖可發現成功將test_folder複製到test資料夾!

萬用字元

萬用字元的好處是可以節省的時間,其中*代表”0個到無窮多個”任意字元,利用*搭配bash其他常用指令,處理資料就更方便快速!更多萬用字元的說明查閱鳥哥的文章

*常用於刪除大量同個副檔名的檔案,如某個專案資料夾裡的.log檔,就可以使用*.log一次刪除所有log檔。

萬用字元*在做檔案或資料夾刪除時要特別小心,有時會誤刪部分相同的檔案及資料夾。

誤刪的情況

目前桌面上的資料夾有test、test1_folder、test_folder三個資料夾,以及test.txttest1.txt兩個.txt檔案

目標要刪除三個資料夾,如果採萬用字元的做法會是

1
rm -r test*

執行上述命令會連同test.txttest1.txt兩個.txt檔案刪除!
所以使用萬用字元做刪除要特別小心!

移除文件

1
rm 檔案名

拷貝檔案

1
cp 被拷貝的檔案名 拷貝後的檔案名

如: 拷貝 hi.txt 到 hello.txt

1
cp hi.txt hello.txt

檔案的移動與更名

更名

1
mv 原檔案名 新檔案名

範例
更名前:

更名後: 將 hi.txt 改為 hello.txt

1
mv hi.txt hello.txt

移動

1
mv 檔案路徑 目錄路徑

建立目錄

1
mkdir 目錄名

檢視當前目錄的文件

1
ls

顯示目錄下檔案

1
2
ls -al : 顯示目錄下隱藏的檔案
ls -l : 顯示目錄下檔案


上圖的訊息包含:權限、檔案大小、上次修改時間等

退回上一層

1
cd ..

回到根目錄

1
cd ~

開啟根目錄資料夾

1
open /

開啟當下電腦使用者根目錄

1
open ~

開啟當前目錄

1
open .

顯示當前使用者目錄名稱

1
echo ~

顯示當前目錄的路徑

1
pwd

切換路徑

1
cd 目標資料夾

切換至根目錄

1
cd /

根目錄V.S.家(home)目錄

Mac 打開Terminal預設路徑會在家目錄下,可以看到~的符號
家目錄下
若想知道當前目錄的路徑,可輸入pwd

如果是要切換至根目錄,可以輸入指令: cd /,切換路徑至根目錄夾下。

根目錄
輸入ls可查看當前目錄下所有的檔案

如果要回到家目錄,輸入指令cd ~

觀念釐清

波浪線等於電腦的名字,也就是說,cd ~cd /Users/tsungyuchen兩者相等

絕對路徑 V.S. 相對路徑

絕對路徑

延續剛才上一個問題,cd /Users/tsungyuchen 路徑為斜線開頭,表示從根目錄開始。

相對路徑

從目前所在目錄開始算起

進階指令

找指定的檔案

find 指令可在執行指令的目錄下做搜尋,找指定的檔案,並回傳路徑。

在目前的目錄底下

不分英文大小寫

1
find -iname 要被搜尋的檔案名稱

區分英文大小寫

1
find -name 要被搜尋的檔案名稱

在 /home 目錄底下,找尋檔案

不分英文大小寫

1
find -iname 要被搜尋的檔案名稱

區分英文大小寫

1
find -name 要被搜尋的檔案名稱

快速查看某個檔案的內容

1
cat 要查看的檔案內容

其實cat指令原始功能是將檔案合併,再顯示合併後的檔案,如果cat後方只接一個檔案,則直接顯示該檔案內容。

查詢檔案內的文字

不用打開文件,就能查詢檔案內的文字。

1
grep "被搜尋的文字名稱" 你的檔案名稱

如:
text檔內有”hello”的文字內容

執行指令

1
grep "he" text.txt

不區分大小寫的模式

搜尋字詞前面加前綴詞 -i

1
grep -i "被搜尋的文字名稱" 你的檔案名稱

apt-get

apt-get 是專門給 ubuntu, debian 等 Linux 系統使用的套件下載軟體

ssh

常用來遠端連線

寫入

1
echo "要寫入的內容" > 被寫入的檔案

其中>寫入時會覆蓋原本檔案的內容重新寫入。

範例(重新覆蓋):

假設今天桌面上有個test.txt檔,執行寫入方法:

1
echo "hello test" > test.txt

查看被寫入的檔案內容:

1
cat test.txt

覆蓋剛剛寫入的檔案

1
echo "hello test will be cover" > test.txt

查看被寫入的檔案內容:

1
cat test.txt

若要不覆蓋原本的檔案,將上個範例的>改為>>即可。

範例(不覆蓋):

寫入

1
echo "add new test line" >> test.txt

echo輸出的內容會斷行,若不想斷行可以改執行printf

查看

1
cat test.txt

合併檔案

可以透過cat指令將檔案進行合併顯示

輸出合併檔案(不影響原始檔案)

如果要將兩個內容合併輸出,可使用cat 檔案1 檔案2的指令
如:
建立一個名為cat.txt的檔案與剛剛的test.txt進行合併輸出。

1
echo "content will be concat" > cat.txt
1
cat cat.txt

輸出合併結果

cat只有單純輸出合併結果,並不影響原始檔案內容

將合併檔案後的檔案輸出成新檔案

1
cat 檔案1 檔案2 >> 合併後的新檔案

合併目標檔案,並產出合併過後的新檔案。如:

1
cat test.txt cat.txt >> cat2.txt


上圖例子產出test.txtcat.txt合併過後的新檔案,名為cat2.txt

移動檔案

將檔案進行移動。

1
mv 目標的絕對路徑

範例

假設今天桌面有個test_folder目標資料夾,要將剛剛建立的test.txt檔移至目標資料夾。

1
mv test.txt /Users/tsungyuchen/Desktop/test_folder/

補充

Mac如何清除系統上被佔用的Port?

查詢 PID

如: 查詢 Port:3000 狀態

1
sudo lsof -i:3000 

清除 PID

查詢PID後,找到佔用該port對應的PID

1
kill PID

如對應PID為32952,則:

1
kill 32952

參考文章

[Day22] Linux 介紹與基礎指令

[Day23] Linux 進階指令

Comments